package com.kehutong.crm.service;

import com.kehutong.crm.dto.DemandForecastResDto;
import com.kehutong.crm.dto.DemandForecastStatisticsDto;
import com.kehutong.crm.enums.DemandForecastTypeEnum;
import com.kehutong.crm.service.impl.DemandForecastServiceImpl;
import org.coraframework.inject.ImplementedBy;
import org.coraframework.json.JSONObject;
import org.coraframework.orm.jdbc.Page;

import java.util.List;

/**
 * 需求预测服务接口
 *
 * @author wupengfei
 */
@ImplementedBy(DemandForecastServiceImpl.class)
public interface DemandForecastService {

    /**
     * 预测
     *
     * @param account  账号信息
     * @param typeEnum 类型
     * @return 排序结果
     */
    Object forecast(JSONObject account, DemandForecastTypeEnum typeEnum) throws Exception;

    /**
     * 预测
     *
     * @param mobile 手机号
     * @param type   类型
     * @return 排序结果
     */
    Object forecast(String mobile, String type) throws Exception;

    /**
     * 根据类型获取预测数据
     *
     * @param jsonObject 类型和分页数据
     * @return 某类型的分页预测数据
     */
    Page<DemandForecastResDto> getByType(JSONObject jsonObject) throws Exception;

    /**
     * 获取用户的预测数据
     *
     * @param userId 用户id
     * @return 用户的预测数据
     */
    List<DemandForecastResDto> getByUserId(String userId) throws Exception;

    /**
     * @return 需求预测统计
     */
    List<DemandForecastStatisticsDto> getStatisticsByCorpIdAndType();

    /**
     * 获取符合预测的用户id
     *
     * @param jsonObject 类型和预测值
     * @return 用户id
     */
    List<String> getByTypeAndForecastValue(JSONObject jsonObject);
}
